""""""
"""
______________________________
time：2021/5/28
______________________________
封装自己的一个输出日志的方法;
"""
import logging
import os

from scripts.handle_yaml import do_yaml
from scripts.handle_path import LOGS_DIR


class MyLogger(object):
    # 需要设置为类方法，这样可以直接用类调用
    @classmethod
    def create_logger(self):
        """创建日志收集器"""
        # 创建一个日志收集器
        # my_log = logging.getLogger('my_log')
        """优化为从配置文件中读，不写死"""
        do_log = logging.getLogger(do_yaml.read_yaml("log", "log_name"))
        # 设置日志收集器的收集等级
        do_log.setLevel(do_yaml.read_yaml("log", "logger_level"))
        # 设置日志输出格式
        # formatter = logging.Formatter(
        #     '%(asctime)s - [%(filename)s-->line:%(lineno)d] - %(name)s:%(levelname)s: %(message)s')  # 这个 格式可以输出日志的打印时间，是哪个模块的那一行，输出的日志级别是什么，以及输入的日志内容。
        formatter = logging.Formatter(do_yaml.read_yaml("log", "formatter"))

        # 渠道一：创建一个输出到控制台的输出渠道
        sh = logging.StreamHandler()
        sh.setLevel('DEBUG')
        # 把设置的输出格式绑定到输出渠道上
        sh.setFormatter(formatter)
        # 将输出渠道添加到日志收集器中
        do_log.addHandler(sh)

        # 渠道二：创建一个输出到文件的渠道
        # fh = logging.FileHandler(filename=do_yaml.read_yaml("log", "logfile_name"), encoding='utf8')
        """优化获取日志文件的目录路径,生成的日志会放到logs的目录中[scripts的同级目录]"""
        fh = logging.FileHandler(
            filename=os.path.join(LOGS_DIR, do_yaml.read_yaml("log", "logfile_name")),
            encoding='utf8'
        )
        print("获取日志文件的路径：", fh)
        fh.setLevel('DEBUG')
        do_log.addHandler(fh)
        # 把设置的输出格式绑定到输出渠道上
        fh.setFormatter(formatter)
        return do_log


""" 直接这里创建日志收集器，不要每个文件导包后再重新创建，不然创建几个日志收集器，就会收集几次信息，累赘重复了"""
do_log = MyLogger.create_logger()

if __name__ == '__main__':
    log = MyLogger.create_logger()
    log.info('hello')
    pass
